package util.util;


import cn.hutool.core.util.ObjectUtil;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.function.Function;

/**
 * @author Max
 * <br>
 * date 2019/12/19 13:54
 */

public class CollectionUtil {

    /**
     * 从某个可遍历对象获取信息 转化为一个list
     * @param values        遍历对象
     * @param keyFunction   转换方法
     * @param <K>           K 泛型
     * @param <V>           V 泛型
     * @return              List
     */
    public static <K,V> List<K> toList(Iterable<V> values, Function<? super V,K> keyFunction) {
        return ObjectUtil.isNull(values) ? Collections.emptyList() : toList(values.iterator(),keyFunction);
    }

    public static <K,V> List<K> toList(Iterator<V> values, Function<? super V,K> keyFunction){
        if(ObjectUtil.isNull(values)){
            return Collections.emptyList();
        } else {
            ArrayList list = new ArrayList();
            while(values.hasNext()) {
                V value = values.next();
                K key = keyFunction.apply(value);
                list.add(key);
            }
            return list;
        }
    }

}